﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Sinacor.Tools.Entidade
{
    [Serializable()]
    public class TraducaoMensagem : IComparer<TraducaoMensagem>
    {
        private Idioma _idioma = new Idioma();
        public Idioma Idioma
        {
            get { return this._idioma; }
            set { this._idioma = value; }
        }

        private StatusTraducao _statusTraducao = new StatusTraducao();
        public StatusTraducao StatusTraducao
        {
            get { return this._statusTraducao; }
            set { this._statusTraducao = value; }
        }

        private string _mensagemTraduzida = string.Empty;
        public string MensagemTraduzida
        {
            get { return this._mensagemTraduzida; }
            set { this._mensagemTraduzida = value; }
        }

        private int? _idMensagem;
        public int? IdMensagem
        {
            get { return this._idMensagem; }
            set { this._idMensagem = value; }
        }

        private string _usuarioLogado = string.Empty;
        public string UsuarioLogado
        {
            get { return this._usuarioLogado; }
            set { this._usuarioLogado = value; }
        }
        
        private static string _propriedadeSort;
        public static string PropriedadeSort
        {
            set { _propriedadeSort = value; }
        }

        #region IComparer<TraducaoMensagem> Members

        public int Compare(TraducaoMensagem x, TraducaoMensagem y)
        {
            int resultado = 0;
            switch (_propriedadeSort.ToLower())
            {
                case "idioma.id":
                case "idioma.descricao":
                case "idioma.sigla":
                    Mensagem.PropriedadeSort = _propriedadeSort.Substring(_propriedadeSort.LastIndexOf('.') + 1);
                    resultado = x.Idioma.Compare(x.Idioma, y.Idioma); 
                    break;

                case "statustraducao.id":
                case "statustraducao.descricao":
                    Mensagem.PropriedadeSort = _propriedadeSort.Substring(_propriedadeSort.LastIndexOf('.') + 1);
                    resultado = x.StatusTraducao.Compare(x.StatusTraducao, y.StatusTraducao);
                    break;

                case "usuariologado":
                    resultado = string.Compare(x.UsuarioLogado, y.UsuarioLogado);
                    break;
              
                //para os casos de mensagem
                default:
                    //Mensagem.PropriedadeSort = _propriedadeSort.Substring(_propriedadeSort.LastIndexOf('.') + 1);
                    //resultado = x.Mensagem.Compare(x.Mensagem, y.Mensagem);
                    break;
            }
            return resultado; 
        }

        #endregion
    }
}
